﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Abp.Application.Services;
using FwProject.Restaurant.Dto;
using Microsoft.AspNetCore.Mvc;

namespace FwProject.Restaurant
{
    public interface IRestaurantUserAppService: IApplicationService
    {
        /// <summary>
        /// 创建一个餐厅人员
        /// </summary>
        /// <returns>The create.</returns>
        /// <param name="input">Input.</param>
        Task<Guid> Create(RestaurantUserInput input);

        /// <summary>
        /// 修改餐厅人员
        /// </summary>
        /// <returns>The create.</returns>
        /// <param name="input">Input.</param>
        Task Update(Guid id, RestaurantUserInput input);
        /// <summary>
        /// 返回餐厅人员
        /// </summary>
        /// <returns>The by identifier async.</returns>
        /// <param name="id">Identifier.</param>
        [HttpGet]
        Task<RestaurantUserDto> GetByIdAsync(Guid id);
        /// <summary>
        /// 返回所有餐厅人员
        /// </summary>
        /// <returns>The paged list async.</returns>
        /// <param name="id">餐厅绑定人员编号</param>

        [HttpGet]
        Task<X.PagedList.IPagedList<RestaurantUserDto>> GetPagedListAsync(int pageIdx, int pageSize, DateTime? begindateTime, DateTime? enddatetime);

        Task<X.PagedList.IPagedList<RestaurantUserDto>> GetDepositPagedListAsync(int pageIdx, int pageSize, DateTime? begindateTime, DateTime? enddatetime, string restaurantName, string isDeposit);
        /// <summary>
        /// 押金统计
        /// </summary>
        /// <returns></returns>
        Task<List<ExportDepositStatisticsDto>> GetExportDepositListAsync(DateTime? begindateTime, DateTime? enddatetime, string restaurantName, string isDeposit);
        /// <summary>
        /// 获取餐厅老板
        /// </summary>
        /// <param name="RestaurantInfoId"></param>
        /// <returns></returns>
        Task<RestaurantUserDto> GetOneUser(Guid RestaurantInfoId);

        /// <summary>
        /// 根据用户编号获取餐厅信息
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        Task<RestaurantUserDto> GetByUserRestaurant(long userId);

        Task<Tuple<RestaurantUserDto, int, int>> GetByUserAppRestaurant(long userId);
        Task<List<RestaurantUserDto>> GetAllByRetaurantAsync(Guid retaurantid);
        
    }
}
